package org.posupe.util;

public class Endereco {
	private String cep;

	private String logradouro;

	private Integer numero;

	private String complemento;

	private String bairro;

	private String cidade;

	private String estado;

	private String pais;

	public Endereco(String cep, String logradouro, Integer numero,
			String complemento, String bairro, String cidade, String estado,
			String pais) {
		this.cep = cep;
		this.logradouro = logradouro;
		this.numero = numero;
		this.complemento = complemento;
		this.bairro = bairro;
		this.cidade = cidade;
		this.estado = estado;
		this.pais = pais;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public String getPais() {
		return pais;
	}

	public void setPais(String pais) {
		this.pais = pais;
	}
	
	public String toString(){
        if (!(this.complemento.trim().equals("")))
	        return "Rua: " + this.logradouro + ", Num: "+this.numero + ", " + this.complemento 
	        + "\nbairro: " + this.bairro + ", cidade: " + this.cidade + ", estado: "+this.estado;
        else
        	return "Rua: " + this.logradouro + ", Num: "+this.numero
	        + "\nbairro: " + this.bairro + ", cidade: " + this.cidade + ", estado: "+this.estado;
    }

	
	public boolean match(Endereco endereco){
		boolean retorno = true;
		if(endereco.getCep() != null && this.getCep() != null && retorno){
			if(!endereco.getCep().equals(this.getCep())){
				retorno = false;
			}
		}
		if(endereco.getLogradouro() != null && this.getLogradouro() != null && retorno){
			if(!endereco.getLogradouro().contains(this.getLogradouro())){
				retorno = false;
			}
		}
		
		if (endereco.getNumero() != null && this.getNumero() != null && retorno){
			if (this.getNumero() == null || endereco.getNumero().intValue() != this.getNumero().intValue()) {
				retorno = false;
			}
		}
		
		if(endereco.getComplemento() != null && this.getComplemento() != null && retorno){
			if(!endereco.getComplemento().contains(this.getComplemento())){
				retorno = false;
			}
		}
		
		if(endereco.getBairro() != null && this.getBairro() != null && retorno){
			if(!endereco.getBairro().contains(this.getBairro())){
				retorno = false;
			}
		}
		if(endereco.getCidade() != null && this.getCidade() != null && retorno){
			if(!endereco.getCidade().contains(this.getCidade())){
				retorno = false;
			}
		}
		if(endereco.getEstado() != null && this.getEstado() != null && retorno){
			if(!endereco.getEstado().contains(this.getEstado())){
				retorno = false;
			}
		}
		if(endereco.getPais() != null && this.getPais() != null && retorno){
			if(!endereco.getPais().contains(this.getPais())){
				retorno = false;
			}
		}
		return retorno;
	}
}
